package com.hbnu.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hbnu.system.core.base.CommonPage;
import com.hbnu.system.model.dto.ArtDTO;
import com.hbnu.system.model.dto.CheckBackDTO;
import com.hbnu.system.model.entity.Art;
import com.hbnu.system.model.query.ArtPageQuery;
import com.hbnu.system.model.vo.ArtVO;

import java.io.IOException;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author ${雷德华}
 * @since 2023-05-16
 */
public interface IArtService extends IService<Art> {
    /**
     * 新增艺术作品
     *
     * @param art
     * @return 是否成功
     */
    boolean addArt(Art art);

    ArtDTO getArtDTOByID(String aid);
    /**
     * 删除艺术作品
     * @param aid
     * @return 是否成功
     */
    boolean deleteArt(String aid) throws IOException;
    /**
     * 修改艺术作品
     *
     * @param art
     * @return 是否成功
     */
    boolean updateArt(Art art);
    /**
     * 艺术作品名查重
     *
     *
     * */
    boolean checkArtname(String name);
    /**
     * 根据艺术作品主键查询艺术作品
     *
     * @param aid
     * @return Art
     */
    Art getArt (String aid);
    /**
     * 院级审核通过
     */
    Boolean collegeCheckPass(String token,String ID);

    /**
     * 院级审核打回
     */
    Boolean collegeCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 校级审核通过
     */
    Boolean schoolCheckPass(String token,String ID);

    /**
     * 校级审核打回
     */
    Boolean schoolCheckBack(String token,CheckBackDTO checkBackDTO);

    /**
     * 艺术作品再度提交
     */
    Boolean ReCommitArt(String id);
    
    /**
     * 艺术作品撤回
     * 只有在院级审核状态才能撤回，撤回后状态变为草稿
     */
    Boolean withdrawArt(String id);
    /**
     * 普通用户分页查看与自己相关的艺术作品
     */
    CommonPage<ArtVO> userGetRelateArt(ArtPageQuery artPageQuery);

    CommonPage<Art> export(ArtPageQuery artPageQuery);

}
